#ifndef BUTTONFUNCTIONMAP_H
#define BUTTONFUNCTIONMAP_H
#include <QString>
#include <QObject>
#include <QMap>

class ButtonFunctionMap:public QObject
{
    Q_OBJECT
public:
    ButtonFunctionMap(QMap<int, int> usualButtonFunctionIn,QObject *parent = 0);

    QString getFunctionTextByButtonId(int buttonId);
    int emitSignalByButtonId(int buttonId);
signals:

    /**
     * @brief jInstruction          关节指令信号函数
     */
    void jInstruction();

    /**
     * @brief lInstruction          直线指令信号函数
     */
    void lInstruction();

    /**
     * @brief arcInstruction        圆弧指令信号函数
     */
    void arcInstruction();

    /**
     * @brief labelInstruction      标签指令信号函数
     */
    void labelInstruction();

    /**
     * @brief jumpInstruction       跳转指令信号函数
     */
    void jumpInstruction();

    /**
     * @brief conditionInstruction  条件指令信号函数
     */
    void conditionInstruction();

    /**
     * @brief waitInstruction       等待指令信号函数
     */
    void waitInstruction();

    /**
     * @brief numberInstruction     数字指令信号函数
     */
    void numberInstruction();

    /**
     * @brief analogInstruction     模拟指令信号函数
     */
    void analogInstruction();

    /**
     * @brief moveMagInstruction    磁导航指令信号函数
     */
    void moveMagInstruction();

    /**
     * @brief moveFreeInstruction   自由导航指令信号函数
     */
    void moveFreeInstruction();

    /**
     * @brief setOdometryInstruction    重置里程计指令信号函数
     */
    void setOdometryInstruction();


    /**
     * @brief addLoadMapInstruction_signal      添加电池电量检测指令
     */
    void addCheckBatteryInstruction_signal();

    /**
     * @brief addWaitCommandInstruction_signal      添加等待命令
     */
    void addWaitCommandInstruction_signal();

    /**
     * @brief addRobotMoveInstruction_Signal        添加机械手控制指令
     */
    void addRobotMoveInstruction_Signal();

    /**
     * @brief addRollInstruction_Signal             添加滚筒指令
     */
    void addRollerInstruction_Signal();
    /**
     * @brief musicInstruction           音乐指令信号
     */
    void musicInstruction();

    /**
     * @brief addLoadMapInstruction_signal      添加加载地图指令信号
     */
    void addLoadMapInstruction_signal();
    /**
     * @brief chargingInstruction        充电指令
     */
    void chargingInstruction();
    /**
     * @brief liftMechanismInstruction      升降机构指令
     */
    void liftMechanismInstruction();

    void axisMoveInstruction_signal();

    /**
     * @brief rInstruction          R寄存器指令信号函数
     */
    void rInstruction();

    /**
     * @brief pRInstruction         PR寄存器指令信号函数
     */
    void pRInstruction();

    /**
     * @brief pLInstruction         pL寄存器指令信号函数
     */
    void pLInstruction();

    /**
     * @brief timerInstruction      定时器指令信号函数
     */
    void timerInstruction();

private:
    QMap<int, int> usualButtonFunction;

};

#endif // BUTTONFUNCTIONMAP_H
